let (id, stage) = *self;
let pkg = packages.iter().find(|p| p.package_id() == id).unwrap();
let deps = resolve.deps(id).into_iter().flat_map(|a| a)
- .filter(|dep| *dep != id)
- .map(|dep| {
- (dep, pkg.dependencies().iter().find(|d| {
- d.name() == dep.name()
- }).unwrap())
- });
+ .filter(|dep| *dep != id);
match stage {
Stage::Start => Vec::new(),
// dependencies (making them available to us).
Stage::BuildCustomBuild => {
let mut base = vec![(id, Stage::Start)];
- base.extend(deps.filter(|&(_, dep)| dep.is_build())
- .map(|(id, _)| (id, Stage::Libraries)));
+ base.extend(deps
+ .filter(|id| pkg.dependencies().iter()
+ .find(|d| d.name() == id.name() && d.is_build())
+ .is_some())
+ .map(|id| (id, Stage::Libraries)));
base
}
// commands themselves (as they may provide input to us).
Stage::RunCustomBuild => {
let mut base = vec![(id, Stage::BuildCustomBuild)];
- base.extend(deps.filter(|&(_, dep)| dep.is_transitive())
- .map(|(id, _)| (id, Stage::RunCustomBuild)));
+ base.extend(deps
+ .filter(|id| pkg.dependencies().iter()
+ .find(|d| d.name() == id.name() && d.is_transitive())
+ .is_some())
+ .map(|id| (id, Stage::RunCustomBuild)));
base
}
// all our transitive dependencies.
Stage::Libraries => {
let mut base = vec![(id, Stage::RunCustomBuild)];
- base.extend(deps.filter(|&(_, dep)| dep.is_transitive())
- .map(|(id, _)| (id, Stage::Libraries)));
+ base.extend(deps
+ .filter(|id| pkg.dependencies().iter()
+ .find(|d| d.name() == id.name() && d.is_transitive())
+ .is_some())
+ .map(|id| (id, Stage::Libraries)));
base
}
} else {
vec![(id, Stage::RunCustomBuild)]
};
- base.extend(deps.map(|(id, _)| (id, Stage::Libraries)));
+ base.extend(deps.map(|id| (id, Stage::Libraries)));
base
}